package com.hejing.String;

import org.junit.Test;

/**
 * ClassName: StringMethodTest01
 * Package: com.hejing.String
 * Description:
 *
 * @Author: HeJing
 * @Create: 2023-04-16 19:41
 * @Version: 1.0
 */
public class StringMethodTest01 {

    /**
     * indexOf() lastIndexOf  contains() test
     */
    @Test
    public void test01(){
        String s1 = "你好世界世界";
        System.out.println(s1.contains("你好"));
        System.out.println(s1.lastIndexOf("世界"));  // 4
        System.out.println(s1.indexOf("你好"));   // 0
        System.out.println(s1.lastIndexOf("世界", 4));  // 4
    }

    /**
     * String substring(int beginIndex)
     * String substring(int beginIndex, int endIndex) : [beginIndex, endIndex) 包左不包右
     */
    @Test
    public void test02(){
        String s1 = "helloworldandjavaandhejing";
        String str1 = s1.substring(8);
        String str2 = s1.substring(3, 9);
        System.out.println(str1);  // ldandjavaandhejing
        System.out.println(str2);  // loworl
    }

    /**
     *
     *    (18) char charAt(index): 返回index下标位置的字符
     *    (19) char[] toCharArray(): 将此字符串转为一个新的字符数组并返回
     *    (20) static String valueOf(char[] data): 返回指定数组中表示该字符序列的String
     *    (21) static String valueOf(char[] data, int offset, int count): 返回指定数组中表示该字符序列的String
     *    (22) static String copyValueOf(chaar[] data): 发牛指定数组中表示该字符序列的String
     *    (23) static String copyValueOf(char[] data, int offset, int count): 返回指定数组中表示该字符序列的String
     */
    @Test
    public void test03(){
        String s1 = "hello world";
        System.out.println(s1.charAt(3));  // l

        String s2 = String.valueOf(new char[]{'a', 'b', 'c'});
        String s3 = String.copyValueOf(new char[]{'a', 'b', 'c'});
        System.out.println(s2 == s3);  // false
    }

    /**
     *
     *    (24) boolean startsWith(xx): 测试此字符串是否以指定的前缀开头
     *    (25) boolean startsWith(String prefix, int toffset): 测试此字符串从指定索引开始的子字符串是否以指定前缀开头
     *    (26) boolean endsWith(xx): 测试此字符串是否以指定的后缀结尾
     */
    @Test
    public void test04(){

        String s1 = "hello world";
        System.out.println(s1.startsWith("he"));                // true
        System.out.println(s1.endsWith("ld"));                  // true
        System.out.println(s1.startsWith("h", 3));  // false
    }

    /**
     *  (27) String replace(char oldChar, char newChar):
     *      返回一个新的字符串，它是通过用newChar 替换此字符串中出现的所有的oldChar得到的，不支持正则
     *  (28) String replace(CharSequence target, CharSequence replacement):
     *      使用指定的字面值替换序列 替换 此字符串中所有匹配字面值目标序列的子字符串。
     *  (29) String replaceAll(String regex, String replacement):
     *      使用给定的replacement 替换此字符串中所有匹配给定的正则表达式的子字符串
     *  (30) String replaceFirst(String regex, String replacement):
     *      使用给定的replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
     */
    @Test
    public void test05(){
        String s1 = "hello";
        String s2 = s1.replace('l', 'w');
        System.out.println(s1); // hello
        System.out.println(s2); // hewwo

        String s3 = s1.replace("ll", "wwww");
        System.out.println(s1); // hello
        System.out.println(s3); // hewwwwo




    }

}




















